# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:张广勤
@Web site: https://www.tunan.wang
@Github:www.github.com
 
@File:Yi3_1.py.py
@Time:2024/8/13 8:41

@Motto:不积跬步无以至千里，不积小流无以成江海！
"""

import random
import time


def coin_toss_to_trigram(toss):
    """
    将三枚铜钱的结果转换为卦象（少阳、老阳、少阴、老阴）及其阴阳值
    :param toss: 投掷结果列表，包含三个'H'或'T'
    :return: 卦象字符串, 阴阳值（1为阳，0为阴，但老阳和老阴在后续处理中会有特殊转换）
    """
    counts = toss.count('H'), toss.count('T')
    if counts == (3, 0):
        return "老阳 ——", 1  # 注意：这里的1仅表示原始的老阳，后续可能需要转换
    elif counts == (2, 1):
        return "少阴 --", 0
    elif counts == (1, 2):
        return "少阳 ——", 1
    else:
        return "老阴 --", 0  # 注意：这里的0仅表示原始的老阴，后续可能需要转换


# 初始化记录每次投掷结果的列表
results = []

# 投掷六次
for _ in range(6):
    # 初始化单次投掷的结果列表
    single_throw = ['H' if random.random() < 0.5 else 'T' for _ in range(3)]
    # 转换为卦象
    trigram = coin_toss_to_trigram(single_throw)
    # 记录投掷结果和卦象
    results.append((single_throw, trigram))

gua=[]
# 反向打印每次投掷的结果和卦象
for i, (throw, trigram) in reversed(list(enumerate(results, 1))):
    print(f"投掷{i}: {' '.join(throw)} -> {trigram[0]} {trigram[1]}")
    gua.append(trigram[1])
    # time.sleep(2)


gua.reverse()
print(gua)

result = ''.join(map(str,gua))
print(result)

# 转换老阳和老阴的阴阳值（老阳转为0，老阴转为1）
converted_yin_yang = []
for _, (trigram_str, yin_yang) in results:
    if trigram_str == "老阳 ——":
        converted_yin_yang.append(0)  # 老阳转为0
    elif trigram_str == "老阴 --":
        converted_yin_yang.append(1)  # 老阴转为1
    else:
        converted_yin_yang.append(yin_yang)  # 其他情况不变

# 打印转换后的阴阳值
print("转换后的阴阳值（1为阳，0为阴，老阳转为0，老阴转为1）:")
for i, value in enumerate(reversed(converted_yin_yang), 1):
    print(f"爻{7-i}: {value}")

# 如果需要将这些值作为字符串输出
result = ''.join(map(str, converted_yin_yang))  # 注意这里使用了[::-1]来反转列表，因为原始是反向处理的
print("转换后的阴阳值字符串（从下到上）:")
print(result)